////////////////////////////////////////
//	File Header
//	Author: Stephen Ringer | stephen.ringer@gmail.com
//	File: SAGAMCEgo.h
//
////////////////////////////////////////
#pragma once
////////////////////////////////////////
//	File Includes
#include "SAGAGeneral.h"
//
////////////////////////////////////////

////////////////////////////////////////
//	Class Name: SAGAMCEgo
class SAGAMCEgo : public SAGAMovementController 
{
	float m_fSpeed;
	float m_fSlide;

	void RecalcAxes();
public:
	SAGAMCEgo();
	virtual ~SAGAMCEgo();

	virtual void Update(float fElapsedTime);

	void      GetRotation(float *fX, float *fY, float *fZ);
	SAGAVector GetRotation();

	void SetRotationSpeedX(float f) { m_fPitchSpd = f; }
	void SetRotationSpeedY(float f) { m_fYawSpd   = f; }
	void SetSpeed(float a)          { m_fSpeed    = a; }
	void SetSlideSpeed(float a)     { m_fSlide    = a; }

	// set attributes directly (avoid this except for initialization)
	void SetRotation(float rx, float ry, float rz);
	void SetPos(SAGAVector &vc)   { memcpy(&m_vcPos, &vc, sizeof(SAGAVector));   }
	void SetRight(SAGAVector &vc) { memcpy(&m_vcRight, &vc, sizeof(SAGAVector)); }
	void SetUp(SAGAVector &vc)    { memcpy(&m_vcUp,  &vc, sizeof(SAGAVector));   }
	void SetDir(SAGAVector &vc)   { memcpy(&m_vcDir, &vc, sizeof(SAGAVector));   }
};
//
////////////////////////////////////////